import {defineStore} from 'pinia';
import {removeTokens, setRefreshTokenAtStorage, setTokenAtStorage} from '../utils/tokens.js';
import {User} from "../models/chat_model.ts";

// 定义一个name为‘loginStore’的store
export const useLoginStore = defineStore('loginStore', {
    // // 第三方插件的持久化配置
    // persist: {
    //     enabled: true,
    //     strategies: [{
    //         storage: sessionStorage
    //     }]
    // },
    state: () => {
        return {
            // 用户信息
            userInfo: {},
            // 用户权限信息
            permissions: {},
            isLogin: false,
        }
    },
    actions: {
        /**
         * 保存登录用户信息
         */
        saveUserInfo(user: User, token: any): void {
            console.debug("saveUserInfo ... ");

            this.isLogin = true;
            this.userInfo = user;
            //持久化token
            if (token) {
                setTokenAtStorage(token.accessToken);
                setRefreshTokenAtStorage(token.refreshToken);
            }
        },
        /**
         * 清除登录用户信息
         */
        async clearUserInfo(): Promise<void> {
            console.debug("clearUserInfo ... ");
            this.isLogin = false;
            this.userInfo = {};
            this.permissions = {};
            //清除token
            removeTokens();
        }
    }
});

